package main

import (
	"bufio"
	"fmt"
	"net"
	"os"
	"strings"
)

//TCP客户端
//一个TCP客户端进行TCP通信的流程如下：
//
//建立与服务端的链接
//进行数据收发
//关闭链接

func readData(conn net.Conn) {
	defer conn.Close()
	rBuf := make([]byte, 128)
	for {
		l, err := conn.Read(rBuf)
		if err != nil {
			fmt.Println("读取数据错误:", err)
			return
		}
		fmt.Println("收到数据:", "(大小:", l, ")", string(rBuf[:l]))
	}

}

func main35() {
	conn, err := net.Dial("tcp", "139.155.76.89:6111")
	if err != nil {
		fmt.Println("连接失败:", err)
		return
	}
	fmt.Println("连接服务端成功")
	defer conn.Close()
	go readData(conn)
	br := bufio.NewReader(os.Stdin) //读取标准输入
	for {
		str, err := br.ReadString('\n')
		if err != nil {
			fmt.Println("读取输入错误", err)
			continue
		}
		str = strings.Trim(str, "\r\n")
		if strings.ToLower(str) == "q" { //如果输入q就退出
			fmt.Println("bye")
			return
		}
		l, err := conn.Write([]byte(str)) // 发送数据
		if err != nil {
			fmt.Println("发送数据失败:", err)
			continue
		}
		fmt.Println("已发送:", l)

	}

}
